In [1]:
import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *

Cyklometrické funkcie

V nasledujúcich príkladoch budeme kresliť grafy a vyšetrovať priebeh cyklometrických funkcií.

Budeme sa venovať týmto funkciam: $$y = \arcsin x \\ y = \arccos x \\ y = \arctan x.$$ Cyklometrické funkcie sú inverzné ku goniometrickým funkciám.

Dokumentácia:

Príklad

Nakreslenie grafu funkcie $$y = \arcsin x.$$ Funkcia arkussínus je definovaná na množine $\langle -1, 1 \rangle$. Je inverzná k zúženiu funkcie sínus na interval $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin x = y \Leftrightarrow x = \sin y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle {:}\ \sin \arcsin x = x \\ \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin \sin y = y. $$

In [2]:
#####
##### nakreslenie grafu funkcie
#####

#### vstupné údaje
def f(X): return np.sin(X) # ufunc verzia zúženia funkcie sínus
X1 = np.linspace(-np.pi/2, np.pi/2, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej

def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-np.pi/2, np.pi/2, 2*20+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej

def h(X): return np.arcsin(X) # ufunc verzia funkcie arkussínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej

#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 9) # veľkosť obrázka (východzia hodnota je 6x4)

### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie arkussínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť

## spoločné nastavenia pre obe osi
lim = (-1.8, 1.8) # ohraničenie hodnôt
ticks = [-1, 0, 1] + [n * np.pi / 2  for n in [-1, 1]] # kótovanie
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2)  for n in [-1, 1]] # označenie kót

## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre osu x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi

## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre osu y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi

## graf funkcie
ax.plot(X1, Y1, label=r"zúženie funkcie sínus na $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$")
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti $y = x$")
ax.plot(X3, Y3, label=r"arkussínus")

## legenda
ax.legend()

### archivácia obrázka
#fig.savefig("<meno súboru>.png")

### samotné zobrazenie
fig.show()

Príklad

Nakreslenie grafu funkcie $$y = \arcsin \sin x.$$ Návod. Zdôvodnenie pre interval $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Nech $x \in \left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Potom $\pi - x \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2} \right\rangle$ a preto $$ \arcsin \sin x = \arcsin \sin (\pi - x) = \pi - x. $$ Grafom funkcie na intervale $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$ je tak priamka určená rovnicou $y = \pi - x$.

In [3]:
#####
##### nakreslenie grafu funkcie
#####

#### vstupné údaje
def f(X): return np.arcsin(np.sin(X)) # ufunc verzia funkcie
X = np.linspace(-3*np.pi, 3*np.pi, 6*2*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej

#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 2) # veľkosť obrázka (východzia hodnota je 6x4)

### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = \arcsin\ \sin\ x$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť

## x-ová os
xtick_numerators = range(-6, 6+1)
ax.set_xticks([n * np.pi / 2  for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2)  for n in xtick_numerators]) # označenie kót na x-ovej osi

## y-ová os
ytick_numerators = range(-1, 1+1)
ax.set_yticks([n * np.pi / 2  for n in ytick_numerators]) # kótovanie y-ovej osi
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2)  for n in ytick_numerators]) # označenie kót na y-ovej osi

## graf funkcie
ax.plot(X, Y)

### archivácia obrázka
#fig.savefig("<meno súboru>.png")

### samotné zobrazenie
fig.show()

Úloha

Pomocou funkcie arkussínus vyjadrite inverznú funkciu k zúženiu funkcie sínus na interval $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Nakreslite je graf.

In [4]:
####
#### šablóna riešenia
####

### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
init_subplot(ax)
ax.set_aspect('equal')
#ax.grid()

## spoločné nastavenia pre obe osi
lim = (-1.1, 4.8)
ticks = [-1, 0, 1] + [n * np.pi / 2  for n in [1, 2, 3]]
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2)  for n in [1, 2, 3]]

## x-ová os
ax.set_xlim(lim)
ax.set_xticks(ticks)
ax.set_xticklabels(ticklabels)

## y-ová os
ax.set_ylim(lim)
ax.set_yticks(ticks)
ax.set_yticklabels(ticklabels)

## zúženie funkcie sínus
def f(X): return np.sin(X)
X1 = np.linspace(np.pi/2, 3*np.pi/2, 2*100+1)
Y1 = f(X1)
ax.plot(X1, Y1, label=r"zúženie funkcie sínus na $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$")

## os súmernosti
def g(X): return X
X2 = np.linspace(-1, 3*np.pi/2, 2*20+1)
Y2 = g(X2)
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti $y = x$")

### riešenie
# def h(X): return None # ufunc verzia inverznej funkcie
# X3 = None # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
# ax.plot(X3, Y3, label=r"inverzná funkcia")

## dokončenie
ax.legend()
#fig.savefig("<meno súboru>.png")
fig.show()

Úloha (3 body)

Nakreslite graf funkcie $$y = \arccos x.$$ Funkcia arkuskosínus je definovaná na množine $\langle -1, 1 \rangle$. Je inverzná k zúženiu funkcie kosínus na interval $\langle 0, \pi \rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \langle 0, \pi \rangle{:}\ \arccos x = y \Leftrightarrow x = \cos y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle{:}\ \cos \arccos x = x \\ \forall y \in \langle 0, \pi \rangle{:}\ \arccos \cos y = y. $$ Pokyny. V obrázku nakreslite os súmernosti a tiež graf zúženia funkcie kosínus.

Úloha

Nakreslite graf funkcie $$y = \arccos \cos x$$ na intervale $\langle -3\pi, 3\pi \rangle$.

Úloha

Pomocou funkcie arkuskosínus vyjadrite inverznú funkciu k zúženiu funkcie kosínus na interval $\langle \pi, 2\pi \rangle$. Nakreslite je graf.

Úloha

Nakreslite graf funkcie $$y = \arctan x.$$ Funkcia arkustangens je definovaná na množine $R$. Je inverzná k zúženiu funkcie tangens na interval $\left( -\frac{\pi}{2}, \frac{\pi}{2}\right)$: $$ \forall x \in R\, \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right){:} \arctan x = y \Leftrightarrow x = \tan y. $$ Všimnime si, že platí $$ \forall x \in R{:} \tan \arctan x = x \\ \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right){:} \arctan \tan y = y. $$ Návod. Nasledujúci obrázok obsahuje jedno z možných riešení.

Úloha (3 body)

Nakreslite graf funkcie $$y = \arctan \tan x$$ na intervale $\langle -2\pi, 2\pi \rangle$.

Úloha

Pomocou funkcie arkustangens vyjadrite inverznú funkciu k zúženiu funkcie tangens na interval $\left( \frac{\pi}{2}, \frac{3\pi}{2} \right)$. Nakreslite je graf.

Úloha (3 body)

Nájdite čísla $r$ a $\varphi$ také, že identita $$3 \cos x - 4 \sin x = r \sin(x - \varphi)$$ platí pre každé reálne číslo $x$. Overte graficky, že vaše riešenie je správne.

In [5]:
####
#### šablóna riešenia
####

### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 4)
init_subplot(ax)
ax.set_aspect('equal')
#ax.grid()

## x-ová os
xtick_numerators = range(-8, 8+1)
ax.set_xticks([n * np.pi / 2  for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2)  for n in xtick_numerators])

## funkcia
def f(X): return 3 * np.cos(X) - 4 * np.sin(X)
X = np.linspace(-4*np.pi, 4*np.pi, 8*2*20+1)
ax.plot(X, f(X), c='yellow', lw='5', label="zadanie")

## riešenie
r = 1 # tento údaj upravte
phi = 0 # tento údaj upravte
def g(X): return r * np.sin(X - phi)
ax.plot(X, g(X), label="riešenie")

## dokončenie
ax.legend()
#fig.savefig("<meno súboru>.png")
fig.show()